package edu.cibertec.sicsolutions.vfs.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import edu.cibertec.sicsolutions.vfs.bean.BeanMenuItem;
import edu.cibertec.sicsolutions.vfs.domain.votacion.ElectorVirtual;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Usuario;
import edu.cibertec.sicsolutions.vfs.profile.MenuPerfil;
import edu.cibertec.sicsolutions.vfs.service.ElectorVirtualService;
import edu.cibertec.sicsolutions.vfs.service.UsuarioService;

public class PerfilAction extends DispatchAction{
    
	 
	public ActionForward init(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {		
		  
		if(request.getParameter("flagNoLogin")!=null && request.getParameter("flagNoLogin").equals("1")){
			return mapping.findForward("perfil") ;
		}
		
		HttpSession session = request.getSession();
		session.setAttribute("logout", "login.do?method=logout");
		//Usuario usuario = (Usuario)session.getAttribute("user");
		Usuario usuario0 = new Usuario();
		usuario0.setLogin(request.getParameter("user"));
		usuario0.setPassword(request.getParameter("password"));
		
		
		Usuario[] usuarios = UsuarioService.findUsuarioByClass(usuario0);
		if(usuarios!=null && usuarios.length > 0){
			Usuario usuario1 =  usuarios[0];
			if( usuario1!=null){
				List<BeanMenuItem> listBeanMenuItems = getListOptionsByUser(usuario1);
				session.setAttribute("listBeanMenuItems",listBeanMenuItems);
				session.setAttribute("usuario", usuario1);
				return mapping.findForward("perfil") ;		
			}
		}
		if(request.getParameter("flagLoginElector")!=null && request.getParameter("flagLoginElector").equals("1")){		 
			ElectorVirtual electorVirtual0 = new ElectorVirtual();
			electorVirtual0.setCodigo(new Integer(request.getParameter("user")));
			electorVirtual0.setPassword(request.getParameter("password"));
			
			ElectorVirtual[] electorVirtuals= ElectorVirtualService.findElectorVirtualByClass(electorVirtual0);
			if(electorVirtuals!=null && electorVirtuals.length > 0){
				ElectorVirtual electorVirtual =  electorVirtuals[0];
				if( electorVirtual!=null){
					return mapping.findForward("votar") ;  		
				}
			}
		}
		return mapping.findForward("backLogin");
		
	}

	 public ActionForward logout(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception { 
		return mapping.findForward("backLogin");
	}
	
	private	List<BeanMenuItem> getListOptionsByUser(Usuario usuario){
		List<BeanMenuItem> listBeanMenuItems = new ArrayList<BeanMenuItem>();
		if(usuario.getCodigoTipoUsuario() == 1 ){//Administracion Central
			listBeanMenuItems = MenuPerfil.getListUserAdminstradorCentral(usuario);
		}
		if(usuario.getCodigoTipoUsuario() == 2 ){//Operador Central
			listBeanMenuItems = MenuPerfil.getListUserOperadorCentral(usuario);
		}
		if(usuario.getCodigoTipoUsuario() == 3 ){//Administracion Consulado
			listBeanMenuItems = MenuPerfil.getListUserAdminstradorConsulado(usuario);
		} 
		if(usuario.getCodigoTipoUsuario() == 4 ){//Operador Consulado
			listBeanMenuItems = MenuPerfil.getListUserOperadorConsulado(usuario);
		}
		if(usuario.getCodigoTipoUsuario() == 5 ){//Elector
			listBeanMenuItems = MenuPerfil.getListUserElector(usuario);
		} 
		return listBeanMenuItems;
	
	
	}
	 
	
	
}
